/*
 * @Description: helpers
 * @Autor: HuiSir<273250950@qq.com>
 * @Date: 2021-12-01 10:41:06
 * @LastEditTime: 2021-12-01 11:22:18
 */

/**
 * 画布平移 
 */
export const canvasMove = (canvasEl, parentBoxEl) => {
    var x, y; //鼠标相对与div左边，上边的偏移
    var isDrop = false; //移动状态的判断鼠标按下才能移动
    canvasEl.onmousedown = function (e) {
        if (e.target != canvasEl && e.target.nodeName != "CANVAS") return

        var e = e || window.event;
        x = e.clientX - canvasEl.offsetLeft;
        y = e.clientY - canvasEl.offsetTop;
        isDrop = true; //设为true表示可以移动
    }

    parentBoxEl.onmousemove = function (e) {
        //是否为可移动状态                　　　　　　　　　　　 　　　　　　　
        if (isDrop) {
            var e = e || window.event;
            var moveX = e.clientX - x; //得到距离左边移动距离                    　　
            var moveY = e.clientY - y; //得到距离上边移动距离

            canvasEl.style.left = moveX + "px";
            canvasEl.style.top = moveY + "px";
        } else {
            return;
        }

    }

    parentBoxEl.onmouseup = function () {
        isDrop = false; //设置为false不可移动
    }
}


/**
 * 平铺结构转为树结构
 */
export const rawList2Tree = (arrList, parentIdKey, childKey, pid) => {
    if (arrList.length === 0) {
        return []
    }
    return arrList
        .filter((item) =>
            // 如果没有父id（第一次递归的时候）将所有父级查询出来
            // 这里认为 !item[parentIdKey] 是最顶层
            pid ? item[parentIdKey] === pid : !item[parentIdKey]
        )
        .map((item) => {
            // 通过父节点ID查询所有子节点
            item[childKey] = rawList2Tree(arrList, parentIdKey, childKey, item.id)
            return item
        })
}